<?php
// $Id$

/**
 * Mailtemplate 封装来自 cm_mailtemplate 数据表的记录及领域逻辑
 */
class Store_Mailtemplate extends QDB_ActiveRecord_Abstract
{
	static $arrayUseforcode=array(
		"sendgoods"=>'发货提示邮件',
		"sellfirst"=>'售后第一封邮件',
	);
    /**
     * 返回对象的定义
     *
     * @static
     *
     * @return array
     */
    static function __define()
    {
        return array
        (
            // 指定该 ActiveRecord 要使用的行为插件
            'behaviors' => '',

            // 指定行为插件的配置
            'behaviors_settings' => array
            (
                # '插件名' => array('选项' => 设置),
            ),

            // 用什么数据表保存对象
            'table_name' => 'cmsp_store_mailtemplate',

            // 指定数据表记录字段与对象属性之间的映射关系
            // 没有在此处指定的属性，QeePHP 会自动设置将属性映射为对象的可读写属性
            'props' => array
            (
                // 主键应该是只读，确保领域对象的“不变量”
                'mailtemplate_id' => array('readonly' => true),

                // 对象创建时间应该是只读
                'created' => array('readonly' => true),

                // 对象最后更新时间应该是只读
                'updated' => array('readonly' => true),


                /**
                 *  可以在此添加其他属性的设置
                 */
                # 'other_prop' => array('readonly' => true),

                /**
                 * 添加对象间的关联
                 */
                # 'other' => array('has_one' => 'Class'),

            ),

            /**
             * 允许使用 mass-assignment 方式赋值的属性
             *
             * 如果指定了 attr_accessible，则忽略 attr_protected 的设置。
             */
            'attr_accessible' => '',

            /**
             * 拒绝使用 mass-assignment 方式赋值的属性
             */
            'attr_protected' => 'mailtemplate_id',

            /**
             * 指定在数据库中创建对象时，哪些属性的值不允许由外部提供
             *
             * 这里指定的属性会在创建记录时被过滤掉，从而让数据库自行填充值。
             */
            'create_reject' => '',

            /**
             * 指定更新数据库中的对象时，哪些属性的值不允许由外部提供
             */
            'update_reject' => '',

            /**
             * 指定在数据库中创建对象时，哪些属性的值由下面指定的内容进行覆盖
             *
             * 如果填充值为 self::AUTOFILL_TIMESTAMP 或 self::AUTOFILL_DATETIME，
             * 则会根据属性的类型来自动填充当前时间（整数或字符串）。
             *
             * 如果填充值为一个数组，则假定为 callback 方法。
             */
            'create_autofill' => array
            (
                # 属性名 => 填充值
                # 'is_locked' => 0,
                'created' => self::AUTOFILL_TIMESTAMP ,
                'updated' => self::AUTOFILL_TIMESTAMP ,
            ),

            /**
             * 指定更新数据库中的对象时，哪些属性的值由下面指定的内容进行覆盖
             *
             * 填充值的指定规则同 create_autofill
             */
            'update_autofill' => array
            (
                'updated' => self::AUTOFILL_TIMESTAMP ,
            ),

            /**
             * 在保存对象时，会按照下面指定的验证规则进行验证。验证失败会抛出异常。
             *
             * 除了在保存时自动验证，还可以通过对象的 ::meta()->validate() 方法对数组数据进行验证。
             *
             * 如果需要添加一个自定义验证，应该写成
             *
             * 'title' => array(
             *        array(array(__CLASS__, 'checkTitle'), '标题不能为空'),
             * )
             *
             * 然后在该类中添加 checkTitle() 方法。函数原型如下：
             *
             * static function checkTitle($title)
             *
             * 该方法返回 true 表示通过验证。
             */
            'validations' => array
            (
                'user_id' => array
                (
                    array('is_int', '会员id必须是一个整数'),

                ),

                'usefor' => array
                (
                    array('not_empty', '用途不能为空'),
                    array('max_length', 255, '用途不能超过 255 个字符'),

                ),

                'useforcode' => array
                (
                    array('max_length', 255, '用途代号不能超过 255 个字符'),

                ),

                'title' => array
                (
                    array('not_empty', '标题不能为空'),
                    array('max_length', 255, '标题不能超过 255 个字符'),

                ),

                'content' => array
                (
                    array('not_empty', '内容不能为空'),

                ),


            ),
        );
    }
    
	static function send($myorderid,$mailtemplate_id){
		$O=Myorders::find("[myorderid]=?",$myorderid)->getOne();
		if ($O->isNewRecord()){return false;}
		$M=self::find("[mailtemplate_id]=?",$mailtemplate_id)->getOne();
		if ($M->isNewRecord()){return false;}
		$U=User_Ebay::find("[user_id]=?",$O->uid)->getOne();
		$C=Customers::find("[ecid]=?",$O->ecid)->getOne();
		
		$wuliu=$O->cmorder[0]->detail->country;
		$TrackLink=@Transport::$wuliu_method_TrackLink[$wuliu];
		if (empty($TrackLink)){
			$TrackLink="http://en.4px.cc";
		}

		$title=$M->title;
		$content=$M->content;
		
		//一个订单下面有多个交易,要给每个交易的客人发送邮件
		foreach ($O->transactions as $T){
			//先初始化数组(以防遗漏,替换时发生错误)
			$arrayMail=self::$arrayMail;
			//再覆盖值
			$arrayMail["TransID"]		=$T->transactionid;									//酷贸交易号
			$arrayMail["OrderID"]		=$myorderid;										//酷贸订单号
			$arrayMail["ItemID"]		=$T->itemid;										//Ebay或其他平台的交易号（ItemID），当一个交易号有多个商品时，是数组，自动罗列
			$arrayMail["ItemLink"]		="<a href='http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&Item=".$T->itemid."' target='_balnk'>http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&Item=".$T->itemid."</a>";														//Ebay或其他平台的交易链接，当一个交易号有多个商品时，是数组，自动罗列
			$arrayMail["ItemName"]		=$T->title;											//Ebay或其他平台的交易商品名字，当一个交易号有多个商品时，是数组，自动罗列
			$arrayMail["TrackNumber"]	=$O->shipped_tracking_number;						//商品发送的包裹追踪号码，当一个交易号对应多个包裹号码时，是数组，自动罗列
			$arrayMail["TransDate"]		=date("H:s Y/m/d",$T->created);					//交易生成时间
			$arrayMail["PayDate"]		=date("H:s Y/m/d",$O->paidtime);					//支付完成时间
			$arrayMail["SentDate"]		=date("H:s Y/m/d");									//发货时间
			
			$arrayMail["TrackLink"]		=$TrackLink;										//物流查询网址
			$arrayMail["FEbayName"]		=$U->ebayuserid;									//卖家的ebay帐号
			$arrayMail["MailDate"]		=date("H:s Y/m/d");									//当前发信日期
		 
			$arrayMail["CName"]			=$C->name;											//下单客人的姓名
			$arrayMail["CStreet"]		=$C->street1."<br>".$C->street2;					//下单客人的街道+门牌
			$arrayMail["CPostcode"]		=$C->postalcode;									//下单客人的邮编
			$arrayMail["CCity"]			=$C->cityname;										//下单客人的城市
			$arrayMail["CProvince"]		=$C->stateorprovince;								//下单客人城市所在州
			$arrayMail["CCountry"]		=$C->country;										//下单客人的国家
			$arrayMail["CEmail"]		=$C->email;											//下单客人的邮件地址
			$arrayMail["CEbayname"]		=$O->buyer_id;										//下单客人的ebay名
		 
			$arrayMail["SCName"]		=$O->ship_name;										//收货客人的姓名
			$arrayMail["SCStreet"]		=$O->ship_street1."<br>".$O->ship_street2;			//收货客人的街道+门牌
			$arrayMail["SCPostcode"]	=$O->ship_postalcode;								//收货客人的邮编
			$arrayMail["SCCity"]		=$O->ship_cityname;									//收货客人的城市
			$arrayMail["SCProvince"]	=$O->ship_stateorprovince;							//收货客人城市所在州
			$arrayMail["SCCountry"]		=$O->ship_country;									//收货客人的国家
			$arrayMail["SCEmail"]		=$O->ship_email;									//收货客人的邮件地址
			
			//替换内容
			$title		=htmlspecialchars($M->title);
			$title		=self::replace($title,$arrayMail);
			$content	=$M->content;
			$content	=self::replace($content,$arrayMail);
			$ffrom		=$U->paypal;
			$ffromname	=$U->ebayuserid;
			//$to			=$C->email;
			$to			="guodi.bi@gmail.com";
			//$to			="tkmxxg@163.com";
			$name		=$C->name;
			
			if (empty($ffrom)){
				$ffrom="service@ibay365.com";
			}
			//echo $ffrom."<br>".$ffromname."<br>".$to."<br>".$name."<br>".$title."<br>".$content."<br>";
			//发送邮件
			return self::smtpMail($ffrom,$ffromname,$to,$name,$title,$content,"");
		}
	}
	
	static function smtpMail($ffrom,$ffromname,$to,$name,$title,$content,$attachment){
		//SMTP
		//$ffrom			="service@coomao.com";
		//$ffromname		="chenjun";
		$fhost			="mail.coomao.com";
		$fusername		="ebay";
		$fpassword		="123456abc";
		
		//SMTP发邮件
		$mail=new Helper_PHPMailer();
		$mail->ResetVariable($ffrom,$ffromname,$fhost,"smtp",true,$fusername,$fpassword,75);
		$mail->Subject=$title;
		$mail->Body=$content;
		$mail->AddAddress($to,$name);
		$mail->AddAttachment($attachment);
		$mail->IsHTML(true);
		if(!$mail->Send()){
			return false;
		}else{
			return true;
		}
	}
	
    static $arrayMail=array(
		"TransID"=>"",		//酷贸交易号
		"OrderID"=>"",		//酷贸订单号
		"ItemID"=>"",		//Ebay或其他平台的交易号（ItemID），当一个交易号有多个商品时，是数组，自动罗列
		"ItemLink"=>"",		//Ebay或其他平台的交易链接，当一个交易号有多个商品时，是数组，自动罗列
		"ItemName"=>"",		//Ebay或其他平台的交易商品名字，当一个交易号有多个商品时，是数组，自动罗列
		"TrackNumber"=>"",	//商品发送的包裹追踪号码，当一个交易号对应多个包裹号码时，是数组，自动罗列
		"TransDate"=>"",	//交易生成时间
		"PayDate"=>"",		//支付完成时间
		"SentDate"=>"",		//发货时间

		"TrackLink"=>"",	//物流查询网址
		"FEbayName"=>"",	//卖家的ebay帐号
		"MailDate"=>"",		//当前发信日期
	 
		"CName"=>"",		//下单客人的姓名
		"CStreet"=>"",		//下单客人的街道+门牌
		"CPostcode"=>"",	//下单客人的邮编
		"CCity"=>"",		//下单客人的城市
		"CProvince"=>"",	//下单客人城市所在州
		"CCountry"=>"",		//下单客人的国家
		"CEmail"=>"",		//下单客人的邮件地址
		"CEbayname"=>"",	//下单客人的ebay名
	 
		"SCName"=>"",		//收货客人的姓名
		"SCStreet"=>"",		//收货客人的街道+门牌
		"SCPostcode"=>"",	//收货客人的邮编
		"SCCity"=>"",		//收货客人的城市
		"SCProvince"=>"",	//收货客人城市所在州
		"SCCountry"=>"",	//收货客人的国家
		"SCEmail"=>"",		//收货客人的邮件地址
    );
    
	static function replace($content,$arrayMail){
		$content=str_replace("&lt;-TransID-&gt;",$arrayMail["TransID"],$content);			//酷贸交易号
		$content=str_replace("&lt;-OrderID-&gt;",$arrayMail["OrderID"],$content);			//酷贸订单号
		$content=str_replace("&lt;-ItemID-&gt;",$arrayMail["ItemID"],$content);				//Ebay或其他平台的交易号（ItemID），当一个交易号有多个商品时，是数组，自动罗列
		$content=str_replace("&lt;-ItemLink-&gt;",$arrayMail["ItemLink"],$content);			//Ebay或其他平台的交易链接，当一个交易号有多个商品时，是数组，自动罗列
		$content=str_replace("&lt;-ItemName-&gt;",$arrayMail["ItemName"],$content);			//Ebay或其他平台的交易商品名字，当一个交易号有多个商品时，是数组，自动罗列
		$content=str_replace("&lt;-TrackNumber-&gt;",$arrayMail["TrackNumber"],$content);	//商品发送的包裹追踪号码，当一个交易号对应多个包裹号码时，是数组，自动罗列
		$content=str_replace("&lt;-TransDate-&gt;",$arrayMail["TransDate"],$content);		//交易生成时间
		$content=str_replace("&lt;-PayDate-&gt;",$arrayMail["PayDate"],$content);			//支付完成时间
		$content=str_replace("&lt;-SentDate-&gt;",$arrayMail["SentDate"],$content);			//发货时间

		$content=str_replace("&lt;-TrackLink-&gt;",$arrayMail["TrackLink"],$content);		//物流查询网址
		$content=str_replace("&lt;-FEbayName-&gt;",$arrayMail["FEbayName"],$content);		//卖家的ebay帐号
		$content=str_replace("&lt;-MailDate-&gt;",$arrayMail["MailDate"],$content);			//当前发信日期
		
		$content=str_replace("&lt;-CName-&gt;",$arrayMail["CName"],$content);				//下单客人的姓名
		$content=str_replace("&lt;-CStreet-&gt;",$arrayMail["CStreet"],$content);			//下单客人的街道+门牌
		$content=str_replace("&lt;-CPostcode-&gt;",$arrayMail["CPostcode"],$content);		//下单客人的邮编
		$content=str_replace("&lt;-CCity-&gt;",$arrayMail["CCity"],$content);				//下单客人的城市
		$content=str_replace("&lt;-CProvince-&gt;",$arrayMail["CProvince"],$content);		//下单客人城市所在州
		$content=str_replace("&lt;-CCountry-&gt;",$arrayMail["CCountry"],$content);			//下单客人的国家
		$content=str_replace("&lt;-CEmail-&gt;",$arrayMail["CEmail"],$content);				//下单客人的邮件地址
		$content=str_replace("&lt;-CEbayname-&gt;",$arrayMail["CEbayname"],$content);		//下单客人的ebay名
	 
		$content=str_replace("&lt;-SCName-&gt;",$arrayMail["SCName"],$content);				//收货客人的姓名
		$content=str_replace("&lt;-SCStreet-&gt;",$arrayMail["SCStreet"],$content);			//收货客人的街道+门牌
		$content=str_replace("&lt;-SCPostcode-&gt;",$arrayMail["SCPostcode"],$content);		//收货客人的邮编
		$content=str_replace("&lt;-SCCity-&gt;",$arrayMail["SCCity"],$content);				//收货客人的城市
		$content=str_replace("&lt;-SCProvince-&gt;",$arrayMail["SCProvince"],$content);		//收货客人城市所在州
		$content=str_replace("&lt;-SCCountry-&gt;",$arrayMail["SCCountry"],$content);		//收货客人的国家
		$content=str_replace("&lt;-SCEmail-&gt;",$arrayMail["SCEmail"],$content);			//收货客人的邮件地址
		
		return $content;
	}
/* ------------------ 以下是自动生成的代码，不能修改 ------------------ */

    /**
     * 开启一个查询，查找符合条件的对象或对象集合
     *
     * @static
     *
     * @return QDB_Select
     */
    static function find()
    {
        $args = func_get_args();
        return QDB_ActiveRecord_Meta::instance(__CLASS__)->findByArgs($args);
    }

    /**
     * 返回当前 ActiveRecord 类的元数据对象
     *
     * @static
     *
     * @return QDB_ActiveRecord_Meta
     */
    static function meta()
    {
        return QDB_ActiveRecord_Meta::instance(__CLASS__);
    }


/* ------------------ 以上是自动生成的代码，不能修改 ------------------ */

}

class MailtemplateException  extends QException {}